package vashion.azeroth.checkKeyWord;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;

//import com.taobao.globalbuys.common.utils.TextUtils;

/**
 * 关键词过滤
 * 
 * @since 2015-09-16
 */
public class RabbishCheckUtils {

    public final static List<String> cisCommon = new ArrayList<String>(); //公共词库

    public final static List<String> cisDartlike = new ArrayList<String>(); //求代购词库

    public final static List<String> cisSnsMsg = new CopyOnWriteArrayList<String>(); //sns msg 词库

    static {
        cisCommon.add("qq");
        cisCommon.add("wx");
        cisCommon.add("v我");
        cisCommon.add("微我");
        cisCommon.add("扣扣");
        cisCommon.add("企鹅");
        cisCommon.add("vchat");
        cisCommon.add("v信");
        cisCommon.add("微博");
        cisCommon.add("私信");
        cisCommon.add("微信");
        cisCommon.add("微商");
        cisCommon.add("wechat");
        cisCommon.add("wchat");
        cisCommon.add("加v");
        cisCommon.add("往返");
        cisCommon.add("留学");
        cisCommon.add("请微");
        cisCommon.add("请v");
        cisCommon.add("请q");
        cisCommon.add("加微");
        cisCommon.add("加v");
        cisCommon.add("加q");
        cisCommon.add("加w");
        cisCommon.add("weixin");
        cisCommon.add("weixi");
        cisCommon.add("wei信");
        cisCommon.add("微xin");
        cisCommon.add("威xin");
        cisCommon.add("威信");
        cisCommon.add("vxin");
        cisCommon.add("请加");
        cisCommon.add("需要联系");
        cisCommon.add("假一");
        cisCommon.add("可加");
        cisCommon.add("速度加");
        cisCommon.add("速加");
        cisCommon.add("兼职");
        cisCommon.add("微a");
        cisCommon.add("微b");
        cisCommon.add("微c");
        cisCommon.add("微d");
        cisCommon.add("微e");
        cisCommon.add("微f");
        cisCommon.add("微g");
        cisCommon.add("微h");
        cisCommon.add("微i");
        cisCommon.add("微j");
        cisCommon.add("微k");
        cisCommon.add("微l");
        cisCommon.add("微m");
        cisCommon.add("微n");
        cisCommon.add("微o");
        cisCommon.add("微p");
        cisCommon.add("微q");
        cisCommon.add("微r");
        cisCommon.add("微s");
        cisCommon.add("微t");
        cisCommon.add("微u");
        cisCommon.add("微v");
        cisCommon.add("微w");
        cisCommon.add("微x");
        cisCommon.add("微y");
        cisCommon.add("微z"); 
        
        cisDartlike.addAll(cisCommon);
        for (int i = 0; i <= 9; i++) {
        	cisDartlike.add("微" + i);
        	cisDartlike.add("加" + i);
        	cisDartlike.add("v" + i);
        	cisDartlike.add("q" + i);
        }
        cisDartlike.add("旅游");
        cisDartlike.add("人肉");
        cisDartlike.add("需要的加");
        cisDartlike.add("需要加");
        cisDartlike.add("需要的");
        cisDartlike.add("有需要");
        cisDartlike.add("有要加");
        cisDartlike.add("要加");
        cisDartlike.add("人在");
        cisDartlike.add("现场");
        cisDartlike.add("居住");
        cisDartlike.add("住在");
        cisDartlike.add("直播");
        cisDartlike.add("加我");
        cisDartlike.add("加a");
        cisDartlike.add("加b");
        cisDartlike.add("加c");
        cisDartlike.add("加d");
        cisDartlike.add("加e");
        cisDartlike.add("加f");
        cisDartlike.add("加g");
        cisDartlike.add("加h");
        cisDartlike.add("加i");
        cisDartlike.add("加j");
        cisDartlike.add("加k");
        cisDartlike.add("加l");
        cisDartlike.add("加m");
        cisDartlike.add("加n");
        cisDartlike.add("加o");
        cisDartlike.add("加p");
        cisDartlike.add("加q");
        cisDartlike.add("加r");
        cisDartlike.add("加s");
        cisDartlike.add("加t");
        cisDartlike.add("加u");
        cisDartlike.add("加v");
        cisDartlike.add("加w");
        cisDartlike.add("加x");
        cisDartlike.add("加y");
        cisDartlike.add("加z");
    }
    
    public static String isRabbishSnsMsg(String content){
    	return isRabbish(content, cisSnsMsg);
    	
    }

	/**
	 * 判断一个求代购是否为违规
	 * 目前算法采用自己的算法，未来采用"垃圾防控"算法
	 * @param content
	 * @return
	 */
    public static String isRabbishDartlike(String content) {
    	return isRabbish(content, cisDartlike);
    }
    
    public static String isRabbish(String content){
    	return isRabbish(content, cisCommon);
    }
    
    public static String filter(String content){
    	
//    	公共词库过滤
    	content = isRabbish(content, cisCommon);
    	
//    	代购词库过滤
    	content = isRabbish(content, cisDartlike);
    	
//    	content = isRabbish(content, cisSnsMsg);
    	
    	return content;
    }
    
    public static String isRabbish(String content, List<String> cis){
    	if( content == null || content.trim().isEmpty() ){
    		return null;
    	}
        String dartlikeContentLowercase = content.trim().toLowerCase();
        String dartlikeContentLowercaseNoDot = dartlikeContentLowercase.replaceAll(" ", "").replaceAll(",", "")
//                .replaceAll("[\\pP\\p{Punct}]", "")
                ;

//        过滤公共词库
        for (int i = 0; i < cis.size(); i++) {
        	dartlikeContentLowercaseNoDot = dartlikeContentLowercaseNoDot.replaceAll(cis.get(i), "");
		}
        
//        if (StringHandleUtils.containSubStrs(dartlikeContentLowercaseNoDot, cis)){
//            return true;
//        }

        // 过滤QQ账号
		/*if (TextUtils.hasNumber(dartlikeContentLowercaseNoDot, 8)) {
			return true;
		}*/

        // 过滤链接
//        if (TextUtils.hasUrlFeature(dartlikeContentLowercase)) {
//            return true;
//        }

        return dartlikeContentLowercaseNoDot;
    }
    
}

